Mechanism that allows initiating print without being aware of the printer email address

ABSTRACT

In one implementation, a request for a print job for a printer having an email address is received. An identifier value for the requested print job is provided to a user. An identifier value input by the user is received. The user-input identifier value is verified, and the print job is released for printing based on the identifier value received from the user being successfully verified.

BACKGROUND

A web-enabled printer is a printer that has internet connectivity. A web-enabled printer has an associated email address. A user of a computing device such as a smart phone can email a document to the web-enabled printer, and the printer will print the emailed document.

Printing to a web-enabled printer requires knowledge of the email address associated with the printer. Knowledge of the printer's email address is fine if, for example, the printer belongs to the person desiring to use the printer. However, in some situations, the person using the computing device to initiate the print job is different than the person that owns the web-enabled printer the former person desires to use.

For example, a person may be in a hotel lobby in which a web-enabled printer is located. For that person to email a document to the printer, the hotel management would need to tell the person the email address of the hotel's web-enabled printer. And once the printer's email address becomes known, the hotel management may find it difficult to control the use of the hotel's printer.

BRIEF DESCRIPTION OF THE DRAWINGS

For a detailed description of various examples, reference will now be made to the accompanying drawings in which:

FIG. 1 shows a system in accordance with various examples;

FIG. 2 shows a system implementing a user device or server in accordance with various examples;

FIG. 3 shows a method in accordance with various examples;

FIG. 4 shows a method in accordance with various examples; and

FIG. 5 shows a method in accordance with various examples.

NOTATION AND NOMENCLATURE

Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, or through a wireless electrical connection.

DETAILED DESCRIPTION

FIG. 1 illustrates a system 100 in accordance with various examples. System 100 includes a user device 102 that is able to communicate through a cloud service 110 to a web-enabled printer 120. Although one user device 102 is shown in FIG. 1, the system 100 works with any number of user devices 102. The user device 102 uses the cloud service 110 to select a web-enabled printer and send a print job to the selected web-enabled printer. The user initially registers him or herself in order to use the cloud service. Part of the registration process is for a user name to be assigned to or otherwise selected by the user. By way of example, the user name may be the user's email address. As explained below, the a user of the user device 102 selects a web-enabled printer 120 and initiates a print job to that printer without knowledge of the selected printer's email address.

The user device 102 can be any type of computing device. Examples include smart phones and notebook computers. The user device 102 includes an input device 104 (e.g., a keypad, keyboard, etc.) and a display 106. In some embodiments, the input device 104 and display 106 are implemented in the form of a touchscreen.

Each web-enabled printer 120 comprises a printer that can connect directly to the Internet or other type of network. Each printer 120 includes an input device 122 such as a keypad as well a display 123. A unique email address is associated with each web-enabled printer 120. If the user of a user device 102 knew the email address of a particular web-enabled printer, the user could email a document stored or otherwise accessible to the user device 102 to the email address of a printer. The target web-enabled printer 120 will receive the email and print the document. However, in accordance with various embodiments, the user of the user device 102 is not informed of the email address of the web-enabled printers. Each web-enabled printer 120 is registered with the cloud service 110. Part of the registration process involves providing the physical location (e.g., postal address, longitude and latitude, etc.) of the printer.

The cloud service 110 is implemented on, for example, a computing system such as a server with which the user device 102 and the web-enabled printers 120 communicate. FIG. 2 illustrates an example of such a computing system. Computing system 150 in FIG. 2 includes a central processing unit (CPU) 152 coupled to a non-transitory storage device 154 and a network interface 156. The storage device 154 may be implemented as any form of non-transitory storage media such as random access memory (RAM), a hard disk drive, Flash storage, or combinations thereof. The storage device 154 includes web-enabled printer code 160, which comprises machine readable instructions that are executed by the CPU 152 to impart the computing system 150 with some or all of the functionality described herein. The hardware diagram of FIG. 2 may also apply to the architecture of the user device 102.

In accordance with various embodiments, when a user of the user device 102 wants to send a print job to a web-enabled printer 120, the user first selects a printer to receive the print job. In some embodiments, the user device 102 includes satellite-based positioning receiver such as a Global Positioning System (GPS) receiver. That receiver provides an indication as to the physical location (e.g., coordinates) of the user device. In other embodiments, the user may input into the user device the location (e.g., postal address). The user's user device 102 provides its location to the cloud service 110. The locations of the various web-enabled printers 120 have previously been provided to the cloud service 110 via the aforementioned registration process. The cloud service 110 performs a printer discovery process by which the cloud service identifies which printers 120 are close to the user's user device. The distance from the user device 102 that the cloud service will search for printers 120 may be programmable or fixed at given distance (e.g., 100 feet). The cloud service 110 provides information to the user device 102 as to which printers 120 are nearby the user device. Such information may be provided in the form of a list of printer names or in the form of map data showing the location of the user device 102 as well as the location of printers 120 present on the map data given the resolution chosen by the user of the user device 102. In accordance with various embodiments, the cloud service 110 does not provide the email address of the discovered web-enabled printers 120 to the user device. The cloud service 110 generates and provides a URL. This URL is provided to the user device 102 along with the list of printers. Providing this URL eliminates the need for user device 102 to know the printers' email address.

The user of the user device 102 then selects one of the web-enabled printers identified by the cloud service 110 to receive a print job from the user device. The cloud service 110 transmits the print job (e.g., document) to the web-enabled printer selected by the user via the URL generated by the cloud service 110. The URL generated by the cloud service 110 may include a universally unique identifier (UUID) that the cloud service 110 maps to, or otherwise associates with, the web-enabled printer selected by the user of the user device 102. The unique URL (unique due, for example, to the UUID included in the URL) points to a representational state transfer application programming interface (REST API). The REST API is a programmatic interface to which clients such as user devices 102 can connect to programmatically initiate a print job. When initiating a print job, the user device 102 will connect to the URL provided by the cloud service 110. The user device may provide additional information on how the print should appear on paper.

The cloud service 110 also generates an identifier value for the print job. The identifier value may be, or may be based on, a random number. The identifier value may be universally unique, but in other implementations the same identifier value may be used more than once on different print jobs. The identifier value is different than the UUID included in the URL. The identifier value comprises an alphanumeric character string in some examples. The identifier value may be a personal identifier (PIN). The cloud service 110 transmits the identifier value to the user device 102 which displays the identifier value on the display 106 for the user to see.

The cloud service 110 further inserts the print job to a print queue corresponding to the selected printer 120. The term print queue refers to any type of storage paradigm for a print job such as a print box or other type of data structure. The cloud service maintains such a queue for each web connected printer. The print job is held in queue by the cloud service for a configurable time duration (e.g., 24 hours) to be sent to the printer after the correct identifier value is provided. The print queue can be viewed on the display 123 of the selected printer 120.

Having knowledge of the identifier value, the user approaches the targeted printer, views the print queue/print box on the display 123 of the printer 122. The user selects the print job in the queue and inputs the identifier value the user received into the input device 122 of the printer. Access to the printer may be controlled by a person other than the user of the user device. For example, the printer may be owned by the owner of the business in which the user is attempting to print a document. The user of the user device 102 may not be permitted to input the identifier value until the business' representative (e.g., store or hotel clerk) says so. The business' representative may require payment for the printing service from the user before permitting the user to enter the identifier value. The identifier value can be entered directly into the printer's input device 122 or an input device otherwise coupled to or accessible by the printer 120.

Once the user does enter the identifier value, which should match the identifier value generated by the cloud service, the printer 120 transmit the user-entered identifier value to the cloud service 110 which verifies the user-entered identifier value. This verification process may include the cloud service 110 comparing the user-entered identifier value provided to the cloud service by the printer with the identifier value originally generated by the cloud service for that particular print job.

If the two identifier values match, the user-entered identifier value is determined by the cloud service 110 to be successfully verified. If the identifier values do not match, the user-entered identifier value is determined by the cloud service 110 not to be successfully verified. If the user-entered identifier value is successfully verified, the cloud service 110 releases the print job and the job data is sent to the web-enabled printer 120. Releasing the print job means that the printer 120 will actively begin to print the print job initiated by the user of the user device. If, however, the user-entered identifier value is not successfully verified, the cloud service 110 will not release the job and the job will continue to be held by the cloud service 110 and not printed. When a job is not successfully released from the server, after the threshold period of time noted above (e.g., 24 hours), the cloud service 110 will purge from the queue the job information and the document received as part of the print job.

FIGS. 3-5 show various methods in accordance with various embodiments. FIG. 3 illustrates a method 200. The various actions shown in FIG. 3 can be performed in the order shown, or in a different order. Further, two or more of the actions may be performed in parallel rather than serially. Reference is made below to a “server.” The server referenced is the server 150 that implements the functionality of the cloud service 110 described above.

At 201, method 200 includes the server discovering one or more web-enabled printers based on physical proximity of such printers to a user device 102 (e.g., a user device 102 through which a user is attempting to initiate a print job). At 202, method 200 includes the server 150 receives a request for a printer having an email address to print a requested print job. The request may originate from the user device 102. At 204, the server provides an identifier value to a user of the user device 102 that originated the request. At 206, the server 150 receives as input an identifier value provided by a user. From potentially multiple print jobs, the user selects his or her desired job on the printer's display 123 and, when prompted by the printer, provides the identifier value into the input device of the printer targeted by the print job as explained above. Each print job may be identified on the printer's display using the user names associated with each user (e.g., user's email address as explained above). At 208, the server 150 verifies the user-provided identifier value. At 210, the server 150 causes the print job to be released based on the user-provided identifier value being successfully verified.

FIG. 4 shows a method 250. The various actions shown in FIG. 4 can be performed in the order shown, or in a different order. Further, two or more of the actions may be performed in parallel rather than serially. Reference is made below to a “server.” The server referenced is the server 150 that implements the functionality of the cloud service 110 described above.

At 252, the server 150 discovers a web-enabled printer 120 based on physical location. As explained above, the server 150 has the physical location of the registered printers 120. When a user desired to initiate a print job to a web-enabled printer, the server 150 receives information specifying the physical location of the user's user device 102. The server 150 then determines which printers 120 are in the vicinity of the user device, and provides a list of nearby printers to the user device.

At 254, the server 150 receives a selection of a printer from the user of the user device without having informed the user of the email address of the selected printer. At 256, the server 150 provides an identifier value associated with the selected printer to the user's user device 102. At 258, the server 150 receives as input an identifier value provided by a user after the use selects the print job on the printer's display as explained above. The user provides the identifier value into the input device of the printer targeted by the print job as explained above.

At 260, the server 150 determines whether the user-provided identifier value is correct for the selected print job. If the user-provided identifier value is correct, then at 262, the server causes a print job to be released to the targeted printer. If the user-provided identifier value is not correct, then at 264, the print job is not released and the print job therefore is not printed.

FIG. 5 shows a method 270. The various actions shown in FIG. 5 can be performed in the order shown, or in a different order. Further, two or more of the actions may be performed in parallel rather than serially. Reference is made below to a “server.” The server referenced is the server 150 that implements the functionality of the cloud service 110 described above.

At 272, the user of a user device 102 initiates a request to discover nearby web-enabled printers to initiate a print job. This action can be performed by the user running an application on the user device 102 to access the cloud service 110.

At 274, the server 150 discovers web-enabled printers 120 in the vicinity of the user's user device 102. As explained above, the server 150 previously is provided with the physical location of the registered printers 120. When a user desired to initiate a print job to a web-enabled printer, the server 150 receives information specifying the physical location of the user's user device 102. The server 150 then determines which printers 120 are in the vicinity of the user device, and provides a list of nearby printers to the user device. At 276, the user of the user device selects a particular printer 120 form the set of printers provided by the server 150.

At 278, the server 250 generates a one-time use URL with a UUID, and maps the UUID to the printer 120 selected by the user (280). Mapping the UID to the printer may entail the server storing information in a database to associate the UUID to the printer. The server 150 also generates an identifier value (e.g., PIN) at 282 and at 284 transmits the identifier value to the user's user device for the user to see.

At 286, the server receives the print job from the user device 102 at the URL created at 278 and inserts the job to print queue of the printer. The job will held on the server pending receipt by the printer of a release command from the server. After the user selects the print job on the printer's display 123 as described previously, the user enters (288) the identifier value provided to the user at 284 into the printer's input device 122. At 290, the printer sends the user-entered identifier value to the sever 150 for verification. The user-entered identifier value is verified by the server at 292 by, for example, comparison with the identifier value generated by the server at 282. If the identifier value is successfully verified, then at 294, the server 150 sends the print job data to the selected printer, and at 296, the server erases the mapping of the UUID to the selected printer preventing additional access to the printer through that UUID. If, however, the identifier value is not successfully verified, then the print job is not released as indicated at 298.

The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications. 

What is claimed is:
 1. A system, comprising: a storage device containing machine-readable instructions; and a central processing unit (CPU) coupled to said storage device and to execute the machine-readable instructions to: discover a web-enabled printer based on physical proximity of the printer to a user device, and after discovery of the printer based on physical proximity of the printer to the user device, perform each of: receive, from a user of the user device, selection of the printer for a print job, generate a one-time use uniform resource locator (URL) for the print job, provide an identifier value for the print job to the user device, using the one-time use URL, transmit the print job to a print queue of the selected printer, receive as input the identifier value input by the user, verify the user-input identifier value, and release the print job for printing based on the identifier value received from the user being successfully verified.
 2. The system of claim 1 wherein the CPU executes the machine-readable instructions to generate the identifier value based on receiving a request for the print job.
 3. The system of claim 1 wherein the identifier value is used only once.
 4. The system of claim 1 wherein the CPU executes the machine-readable instructions to: transmit a list of discovered printers to the user device, and receive, from the user of the user device, selection of the printer from the list of discovered printers.
 5. The system of claim 1 wherein the CPU executes the machine-readable instructions to receive a request from the user to discover a web-enabled printer for the print job.
 6. The system of claim 1 wherein the CPU executes the machine-readable instructions to: generate the one-time use URL with a universally unique identifier (UUID), map the UUID to the printer selected by the user, and erase the mapping of the UUID to the selected printer upon release of the print job for printing.
 7. The system of claim 1 wherein physical proximity is based on a satellite-based positioning receiver associated with the user device.
 8. The system of claim 1 wherein physical proximity is based on a location provided by the user.
 9. The system of claim 1 wherein the CPU executes the machine-readable instructions to: receive selection of the print job by the user at an input device of the printer, and receive the identifier value input by the user at the input device of the printer.
 10. A non-transitory storage device containing machine-readable instructions that, when executed by a central processing unit (CPU), cause the CPU to: discover a web-enabled printer based on physical proximity of the printer to a user device; receive, from a user of the user device, a request for selection of the printer for a print job generate a one-time use uniform resource locator (URL) for the print job, the one-time use URL generated with a universally unique identifier (UUID); map the UUID to the selected printer; provide an identifier value for the print job to the user device; using the one-time use URL, insert the print job into a print queue of the selected printer; receive as input the identifier value input by the user of the user device; verify the user-input identifier value; and release the print job for printing based on the identifier value received from the user being successfully verified.
 11. The storage device of claim 10 wherein the request for selection of the printer is received after the discovery of the web-enabled printer based on physical proximity of the printer to the user device.
 12. The storage device of claim 11 further wherein each of the following are performed after the discovery of the web-enabled printer based on physical proximity of the printer to the user device: generate the one-time use URL for the print job, map the UUID to the selected printer, provide the identifier value for the requested print job to the user device, insert the print job into the print queue of the selected printer, receive as input the identifier value input by the user of the user device, verify the user-input identifier value, and release the print job for printing.
 13. The storage device of claim 10 wherein physical proximity is based on a satellite-based positioning receiver associated with the user device or based on a location provided by the user.
 14. The storage device of claim 10 wherein the machine-readable instructions cause the CPU to: receive a request from the user to discover a web-enabled printer for the print job, transmit a list of discovered printers to the user device, and receive, from the user of the user device, selection of the printer from the list of discovered printers.
 15. The storage device of claim 10 wherein the machine-readable instructions cause the CPU to erase the mapping of the UUID to the selected printer upon the print job being released for printing.
 16. A method, comprising: discovering a web-enabled printer based on physical location of a user device, including identifying to a user of the user device discovered printers within a proximity of the user device; for a print job, receiving a selection of a printer from the discovered printers, including receiving the selection from the user of the user device without informing the user of an email address associated with the selected printer; and in response to discovering the web-enabled printer and receiving the selection of the printer from the discovered printers, further comprising: generating a one-time use uniform resource locator (URL) for the print job; providing to the user device an identifier value associated with the selected printer; using the one-time use URL, transmitting the print job to the selected printer; receiving as an input the identifier value provided by the user; verifying the identifier value provided by the user; and releasing the print to the selected printer upon the identifier value being successfully verified.
 17. The method of claim 16 further comprising queuing the print job pending release and transmitting the print job to the selected printer upon the identifier value being successfully verified.
 18. The method of claim 16 further comprising mapping a universally unique identifier (UUID) to the selected printer and including the UUID in a one time use the one-time use URL used to transmit the print job to the selected printer.
 19. The method of claim 18 further comprising erasing said mapping upon releasing the print job.
 20. The method of claim 16 further comprising generating the identifier value based on a random number. 